Runlength-limited (RLL) codes have been widely used in magnetic and optical data storage to eliminate sequences that are undesired for the processes of recording and reproducing digital data. Various classes of RLL codes are used in practice. For example, peak detection systems employing runlength-limited RLL(d,k) constrained codes such as rate-1/2 RLL(2,7) and rate-2/3 RLL(1,7) codes have been predominant in digital magnetic storage at low normalized linear densities. At moderate normalized linear densities, the introduction of partial-response maximum-likelihood (PRML) detection channels into data storage required a different type of constrained codes. This class of codes, which are known as PRML(G,I) or PRML(0,G,I) codes, facilitates timing recovery and gain control, and limits the path memory length of the sequence detector, and therefore the decoding delay, without significantly degrading detector performance. PRML(G,I) codes may also be used in conjunction with 1/(1⊕D2) precoders and with noise-predictive, maximum-likelihood (NPML) channels which generalize the PRML concept (⊕ stands for the logical exclusive-OR operation). The G constraint limits the maximum runlength of zeros at the modulation encoder output (input of 1/(1⊕D2) precoder) to G. The I constraint limits the maximum runlength of zeros in the even and odd interleave of the encoder output (input of 1/(1⊕D2) precoder) to I.
The first PRML(G, I) code that was implemented in a data storage device had the code rate 8/9 and satisfied the constraints G=4 and I=4. In addition, it satisfied a VFO constraint, which is also known as the M constraint, allowing discrimination of encoded data from the synchronization preamble and therefore fast start-up of the PRML receiver. The M constraint limits the maximum runlength of ones at the modulation encoder output (input of 1/(1⊕D2) precoder) to M. The class of RLL codes satisfying G, I and M constraints is known as PRML(G, I, M) codes. The recorded VFO pattern . . . ++−−++−− . . . (the output of a 1/(1⊕D2) precoder) is received as a tone with frequency 1/(4T) at the center of the channel. The VFO constraint (M constraint) was generalized to constraints used to construct anti-whistle codes that exclude data patterns with zero or one spectral component in the frequency band (0, 1/(2T)). Hard disk drive (HDD) products often used architectures that did not require the VFO constraint. Therefore, high-rate PRML codes with rates higher than 8/9, which have been designed, satisfy G and I constraints but not necessarily the M constraint.
The RLL code used in Linear Tape Open (LTO) standards for generations 2 to 4 (hereinafter LTO 2-4) is a twins-constrained maximum-transition-run MTR(j,k,t) code that requires 1/(1⊕D) precoding. It satisfies j, k and t constraints at the input of the 1/(1⊕D) precoder. The k constraint limits the maximum runlength of zeros at the modulation encoder output (input of 1/(1⊕D) precoder) to k. The j constraint limits the maximum runlength of ones at the modulation encoder output (input of 1(1⊕D) precoder) to j. The twins constraint t limits the maximum number of consecutive twins (pair of zeros or pair of ones) at the modulation encoder output (input of 1/(1⊕D) precoder) to t. The G and I constraints at the input of 1/(1⊕D2) precoders are equivalent to constraints j=G+1, k=G+1 and t=I at the input of 1/(1⊕D) precoders where both set of constraints PRML(G,I) and MTR(j,k,t) give rise to the same set of constraints on recorded patterns (output of precoder). The RLL code in LTO 2-4 is based on a rate-8/9 code that also satisfies the VFO constraint, rules out the Data Set Separator (DSS) and Resynchronization (Re Sync) patterns and ensures that each RLL codeword has at least one isolated transition. The concatenated rate of the RLL code in LTO 2-4 is 16/17 because a rate-8/9 encoded byte is concatenated with an uncoded byte. The constraints satisfied by the rate-16/17 RLL code in LTO 2-4 are equivalent to G=13, I=11 and M=23. Additionally, the RLL code parameter that is very important to error-rate performance with error-correction-coding (ECC) is error propagation. Error propagation is defined as the minimum length of a channel error burst in NRZ bits that causes two erroneous symbols in one Reed-Solomon (RS) codeword at the RS decoder input. Error propagation depends on the modulation code properties and the depth of interleaving of ECC codewords. In LTO 2-4 two-way interleaved RS codewords are RLL encoded and the error propagation of the modulation code is therefore 9 NRZ bits. Since most of the error patterns at the detector output are 1 to 4 NRZ bits long, most of the time one symbol in a RS codeword is in error as a result of a short (non-fading) error burst in the channel.
Construction of rate-8/9 PRML(G, I, M) codes has previously been described. Additionally, the rate of non-concatenated PRML(G, I, M) codes that have been constructed is less than 16/17.
The next generation LTO standard (LTO 5) will likely have a rate-32/33 or rate-48/49 RLL code in order to increase the format efficiency. One method for the design of such codes is the straightforward extension of the rate-16/17 LTO 2-4 code by inserting two or four more uncoded bytes to obtain a rate-32/33 or rate-48/49 code, respectively. However, this solution results in a rate-32/33 RLL code with parameters G=29, I=19, M=39 or a rate-48/49 RLL code with parameters G=45, I=27, M=55. These values are not acceptable because the constraints are too weak. Another solution would be to generate a rate-16/17 encode and decode table using a computer and use computer-aided design tools to generate Boolean-based or ROM-based logic for encoding and decoding based on the encode and decode table. However, this solution is too complex and would require more than 500,000 gates per channel to implement. Additionally, the encoding operation needs a compact representation such that it can be included into the LTO 5 standard; specifying 65,536 17-bit codewords in the LTO 5 standard is not acceptable. Therefore, there is a need for an algorithmic approach to design an RLL code that satisfies similar constraints as the LTO 2-4 RLL code does.